package org.jsola.hr.helper;

import org.jsola.common.SafeKit;
import org.jsola.hr.constant.SocCheckWrongsStatus;
import org.jsola.hr.dto.SocCheckItemAddDTO;
import org.jsola.hr.dto.SocCheckItemUpdateDTO;
import org.jsola.hr.entity.SocCheckItemDO;
import org.jsola.hr.query.SocCheckItemQuery;
import org.jsola.hr.service.ISocCheckItemService;
import org.jsola.hr.vo.SocCheckItemVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;

import java.math.BigDecimal;
import java.util.List;

import static org.jsola.hr.core.AbstractTest.SITE_ID;



/**
 * 校验子项表
 *
 * @author zhr
 */
@Component
public class SocCheckItemTestHelper extends BaseTestHelper {
    
    @Autowired
    private ISocCheckItemService socCheckItemService;

    /**
     * 生成add测试数据
     * @return SocCheckItemAddDTO
     */
    public SocCheckItemAddDTO getSocCheckItemAddDTO(){
        SocCheckItemAddDTO socCheckItemAddDTO = new SocCheckItemAddDTO();
        socCheckItemAddDTO.setSocCheckId(getRandomValue("varchar",32));
        socCheckItemAddDTO.setEmpId(getRandomValue("varchar",32));
        socCheckItemAddDTO.setEmpName(getRandomValue("varchar",50));
        socCheckItemAddDTO.setIdCard(getRandomValue("varchar",20));
        socCheckItemAddDTO.setYear(getRandomValue("varchar",32));
        socCheckItemAddDTO.setMonth(getRandomValue("varchar",32));
        socCheckItemAddDTO.setEmpSocInfoId(getRandomValue("varchar",32));
        socCheckItemAddDTO.setPayCostType(SafeKit.getInteger(getRandomValue("tinyint",4)));
        socCheckItemAddDTO.setSysPersonalSocAmount(SafeKit.getBigDecimal(getRandomValue("decimal",11)));
        socCheckItemAddDTO.setSysPersonalPfAmount(SafeKit.getBigDecimal(getRandomValue("decimal",11)));
        socCheckItemAddDTO.setSysCompanySocAmount(SafeKit.getBigDecimal(getRandomValue("decimal",11)));
        socCheckItemAddDTO.setSysCompanyPfAmount(SafeKit.getBigDecimal(getRandomValue("decimal",11)));
        socCheckItemAddDTO.setSysServiceCost(SafeKit.getBigDecimal(getRandomValue("decimal",11)));
        socCheckItemAddDTO.setSysSocialSecurityFine(SafeKit.getBigDecimal(getRandomValue("decimal",11)));
        socCheckItemAddDTO.setSysAccumulationFundFine(SafeKit.getBigDecimal(getRandomValue("decimal",11)));
        socCheckItemAddDTO.setExcelPersonalSocAmount(SafeKit.getBigDecimal(getRandomValue("decimal",11)));
        socCheckItemAddDTO.setExcelPersonalPfAmount(SafeKit.getBigDecimal(getRandomValue("decimal",11)));
        socCheckItemAddDTO.setExcelCompanySocAmount(SafeKit.getBigDecimal(getRandomValue("decimal",11)));
        socCheckItemAddDTO.setExcelCompanyPfAmount(SafeKit.getBigDecimal(getRandomValue("decimal",11)));
        socCheckItemAddDTO.setExcelServiceCost(SafeKit.getBigDecimal(getRandomValue("decimal",11)));
        socCheckItemAddDTO.setExcelSocialSecurityFine(SafeKit.getBigDecimal(getRandomValue("decimal",11)));
        socCheckItemAddDTO.setExcelAccumulationFundFine(SafeKit.getBigDecimal(getRandomValue("decimal",11)));
        socCheckItemAddDTO.setPersonalJson(getRandomValue("text",0));
        socCheckItemAddDTO.setCompanyJson(getRandomValue("text",0));
        socCheckItemAddDTO.setSocProgId(getRandomValue("varchar",32));
        socCheckItemAddDTO.setCompanyId(getRandomValue("varchar",32));
        socCheckItemAddDTO.setWrongsStatus(SocCheckWrongsStatus.SYS_NO_PERSON.getValue());
        return socCheckItemAddDTO;
    }


    /**
     * 生成update测试数据
     * @return SocCheckItemUpdateDTO
     */
    public SocCheckItemUpdateDTO getSocCheckItemUpdateDTO(SocCheckItemVO socCheckItemVO){
        return socCheckItemService.selectDOById(socCheckItemVO.getId(), SITE_ID).to(SocCheckItemUpdateDTO.class);
    }

    /**
     * 生成查询数据
     * @return SocCheckItemQuery
     */
    public SocCheckItemQuery getSocCheckItemQuery() {
        SocCheckItemQuery socCheckItemQuery = new SocCheckItemQuery();
        List<SocCheckItemDO> socCheckItemDOList = socCheckItemService.list(new SocCheckItemDO(),SITE_ID);
        if (!CollectionUtils.isEmpty(socCheckItemDOList)) {
            SocCheckItemDO socCheckItemDO = socCheckItemDOList.get(0);
            socCheckItemQuery = socCheckItemDO.to(SocCheckItemQuery.class);
        }
        return socCheckItemQuery;
    }

    /**
     * 保存示例
     * @return SocCheckItemVO
     */
    public SocCheckItemVO saveSocCheckItemExample(){
        SocCheckItemAddDTO addDTO = this.getSocCheckItemAddDTO();
        SocCheckItemVO socCheckItemVO = socCheckItemService.save(addDTO,buildTokenUser());
        return socCheckItemVO;
    }


}

